package ec.edu.ucacue.siop.service.estadisticas;

import java.util.Calendar;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import ec.edu.ucacue.siop.contenedor.ContEstadisticas;
import ec.edu.ucacue.siop.dao.historico.HistoriaVariablesProcesoDAO;
import ec.edu.ucacue.siop.dao.historico.HistoriaVariablesProcesoDAOImpl;
import ec.edu.ucacue.siop.dao.recurso.VariableProcesoDAO;
import ec.edu.ucacue.siop.dao.recurso.VariableProcesoDAOImpl;
import ec.edu.ucacue.siop.modelo.operacion.historico.HistoriaVariablesProceso;
import ec.edu.ucacue.siop.modelo.recurso.UnidadFuncional;
import ec.edu.ucacue.siop.modelo.recurso.VariableProceso;
import ec.edu.ucacue.siop.proceso.controlEstadistico.CrearEstadisticaVarPro;
import ec.edu.ucacue.siop.utilidades.HibernateUtil;

public class ControlEstadisticoServiceImpl implements ControlEstadisticoService{

	public ContEstadisticas estadisticaPorVarProc(String nomVar,
			String unidad, Calendar fechaInicio, Calendar fechaFin) {
		
		
		Session ses = HibernateUtil.beginTransaction();
			
//		 Transaction tx = ses.beginTransaction();
		 
		VariableProcesoDAO varProDao = new VariableProcesoDAOImpl();
		VariableProceso varPro = varProDao.encontrarEspecifica(nomVar, unidad);
		if(varPro == null) {
			return null;			
		}
		HistoriaVariablesProcesoDAO hisDao = new HistoriaVariablesProcesoDAOImpl();
		
		List<HistoriaVariablesProceso> lista = hisDao.buscarPorVarLapso(varPro,fechaInicio,fechaFin);
		
		CrearEstadisticaVarPro creador = new CrearEstadisticaVarPro();
		
		if(creador.calcular(varPro, lista, fechaInicio, fechaFin)) {
			ContEstadisticas contEst = creador.getContenedor();
			HibernateUtil.closeSession();
			return contEst;
			
		}
		HibernateUtil.closeSession();
		return null; 
	}

}
